## 练习 1：用列表构建 栈 结构
# 需求
# - 用列表构建 栈结构
#   - 栈是一个 **后进先出** 的结构
#   - 编写一个程序，用列表实现栈结构
#   - 需要支持 **压栈(入栈)、出栈、查询** 功能
stack = []  # stack: 用列表实现的栈结构
def push_it():  # 数据入栈
    data = input("data: ").strip()#strip():去除字符串左右两边的空格
    if data == "":
        print("空字符串不能入栈")
    else:
        stack.append(data)  # 数据入栈
def pop_it():  # 数据出栈
    if len(stack) != 0:  # 表示stack中还有数据，数据可以出栈
        stack.pop()
    else:
        print("栈已空，无法弹出数据")
def view_it():  # 查看栈结构数据
    print(stack)
def show_menu():
    str01 = """(0) push_it
(1) pop_it
(2) view_it
(3) exit
请输入您的选择(0/1/2/3): """
    while True:
        choice = input(str01)  # 用户的选择
        if choice not in ["0", "1", "2", "3"]:
            print("请重新输入(0/1/2/3)!!!")
            continue  # 让用户执行下一次循环，重新输入
        if choice == "0":
            push_it()
        elif choice == "1":
            pop_it()
        elif choice == "2":
            view_it()
        else:  # choice == "3"
            print("ByeBye~")
            break
if __name__ == "__main__":
    show_menu()
